package niuniu

import "gitee.com/yuya000/cards-game-server-go/server"

const (
	MessageTypePlayerJoinEvent    = 5010 // 玩家加入事件
	MessageTypeReadyEvent         = 5030 // 玩家准备好了
	MessageTypeGameStart          = 5050 // 游戏开始
	MessageTypePrepareQiangZhuang = 5060 // 预备抢庄
	MessageTypeZhuangZhu          = 5071 // 庄主诞生通知消息
	MessageTypeXiaZhu             = 5080 // 下注
	MessageTypePlayerQuit         = 5020 // 玩家退出房间
	MessageTypeGameDestroy        = 5040 // 房间解散
	MessageTypeQiangZhuang        = 5070 // 抢庄
	MessageTypeChuPai             = 5100 // 出牌
	MessageTypeGameExit           = 5140 // 游戏退出
	MessageTypeFaPai              = 5090 // 发牌
	MessageTypeJieSuan            = 5110 // 结算
	MessageTypeGameOver           = 5130 // 游戏结束
	MessageTypeNextRound          = 5120 // 下一论
	MessageTypeGameContinue       = 5150 // 游戏继续
	MessageTypePlayerResume       = 5160 // 牛牛游戏恢复
)

// 玩家加入的通知消息（其他玩家）
type PlayerJoinNotice struct {
	UserInfo *server.UserInfoEntry
	UserClub *server.ClubInfoEntry
}

// 玩家加入游戏的响应（玩家）
type JoinGameResp struct {
	GameType      string                  // 游戏类型
	HouseNo       string                  // 游戏ID
	Players       []*server.UserInfoEntry // 当前在线玩家
	PlayerClubs   []*server.ClubInfoEntry // 当前在线玩家俱乐部信息
	GameBuildArgs server.Args             // 游戏构建参数
	ReadyPlayers  []string                // 准备好的玩家的ID数组
}

type ReadyEvent struct {
	Id string
}

type ZhuangZhuEvent struct {
	Id string // 庄主ID
}

type PlayerQuitEvent struct {
	Id string // 退出的玩家Id
}

type QiangZhuangEvent struct {
	Id string // 要抢庄的人的Id
}

type XiaZhuEvent struct {
	Id    string
	Socre int
}

// 牌数据
type PaiEvent struct {
	Pais []string
}

// 出牌数据
type ChuPaiEvent struct {
	Pais []string
}

// 出牌通知
type ChuPaiNoticeEvent struct {
	Id string
}

type PlayerZongJieSuanEntry struct {
	Id         string // 玩家ID
	TotalScore int    // 总分值
}

type PlayerJieSuanEntry struct {
	Id          string   // 玩家ID
	HoldingPais []string // 持有牌
	Niu         int      // 牛几
	Score       int      // 本轮赢得或者输掉分值
}

type JieSuanEvent struct {
	PlayerJieSuanData     []PlayerJieSuanEntry
	PlayerZongJieSuanData []PlayerZongJieSuanEntry
}

type GameExitVote struct {
	YesOrNo string // 同意还是不同意
}

type GameExit struct {
	Id      string // 玩家ID
	YesOrNo string // 同意还是不同意
}

type PlayerResumeEvent struct {
	GameType            string                           // 游戏类型
	No                  string                           // 房间编号
	Status              int                              // 游戏状态
	Rules               server.Args                      // 游戏构建参数
	Owner               string                           // 房主ID
	ZhuangZhu           string                           // 庄主ID
	MaxRound            int                              // 总局数
	CurrentRound        int                              // 当前局数
	ReadyPlayer         []string                         // 准备好的玩家
	Stake               map[string]int                   // 玩家下注
	QiangZhuangPlayer   []string                         // 抢庄的玩家ID数组
	PlayerHoldingPai    []string                         // 当前玩家持有的牌
	GameExitBallotBox   map[string]string                // 游戏退出投票情况
	Players             []*server.UserInfoEntry          // 玩家信息
	PlayersCurrentScore map[string]int                   // 玩家当前分数
	PlayersTotalScore   map[string]int                   // 玩家总分
	PlayersClubInfo     map[string]*server.ClubInfoEntry // 玩家俱乐部信息
	LostPlayer          []string                         // 掉线玩家信息
}

type PlayerResumeNoticeEvent struct {
	Id string
}
